
import { getOnlyDate, getTimeMs, dayMs } from '../utils/date';
import { arrToMap, myuuid } from '../utils/common';
import { FutureUtils } from '../future/FutureUtils';


const db = uniCloud.database();

export class MemoryApi {
	/**
	 * 增加一条记忆记录。
	 */
	public static async add(item : {
		name : string,
		describe : string,
		type : number,
		describe_type : number,
		photos : string[],
		important : number,
		next_time : number;
		create_by : string;
		create_time: string;
		startDate : Date, // 额外的
		futureDateArr : number[] // 额外的
	}) {
		const startDate = getOnlyDate(item.startDate);
		const startTime = getTimeMs(item.startDate);
		const futureMsArr = item.futureDateArr.map(day => {
			return new Date(startDate.getTime() + day * dayMs).getTime();
		});

		const toAddMemoryItem = {
			name: item.name,
			describe: item.describe,
			type: item.type,
			describe_type: item.describe_type,
			photos: item.photos,
			important: item.important,
			next_time: item.next_time,
			create_by: item.create_by,
			create_time: item.create_time,
		}
		// 对于没有传的字段，数据库会自动添加上并设置默认值。
		const memoryRes = await db.collection('memory').add(toAddMemoryItem);
		const newId = memoryRes.result.id;
		console.log('memory表中添加了一条记录: ', newId);
		await FutureUtils.add('memory', newId, futureMsArr, item.create_by);
		return newId;
	}

	/**
	 * 通过记忆的id查询其详情。
	 * @param {Object} 
	 */
	public static async getById(id : string) {
		return await db.collection('memory').doc(id);
	}

	/**
	 * 查询指定日期的记忆内容
	 */
	public static async getListByDate(date : number) {
		const futureTemp = FutureUtils.getDatesTemp([date], '_id,memory_ids');
		const res = await db.collection(futureTemp, 'memory').get();
		const futureArr = res.result.data; // 是一个数组。
		return futureArr.length === 0 ? [] : futureArr[0].memory_ids;
	}
}